package com.wzy.flyweight;

/**
 * @Auther: wzy
 * @Date: 2021/12/05/13:51
 * @Description:
 * 具体享元ConcreteFlyweight
 * 一方面要保存需共享的内蕴状态，
 * 另一方面将外蕴状态作为参数传入operation()方法中，可改变方法的行为，但并不改变对象的内蕴状态。
 */

public class ConcreteFlyweight implements Flyweight {

    private String intrinsicState = null;

    /**
     * 构造函数中内蕴状态作为参数传入.
     */
    public ConcreteFlyweight(String intrinsicState) {
        this.intrinsicState = intrinsicState;
    }

    /**
     * 外蕴状态作为参数传入方法中，可改变方法的行为，但并不改变对象的内蕴状态.
     */
    @Override
    public void operation(String extrinsicState) {
        System.out.println();
        System.out.println("内蕴状态：" + intrinsicState);
        System.out.println("外蕴状态：" + extrinsicState);
        System.out.println("-------------------------");
    }

    @Override
    public String toString() {
        return this.intrinsicState;
    }
}